﻿/*
 *  SE OBTENDRAN LOS EXAMENES REALIZADOS A LOS PACIENTES POR MEDIO DE LAS BOLETAS
 *  DE LA BASE DE DATOS
 *  
 * */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;

namespace CapaNegocio
{
    public class clsPaciente
    {
        //tabla paciente
        public int codigo_paciente                      { get; set; } //cambios de INT en la BD, se autogenerara el codigo
        public String nombre_Paciente                   { get; set; }
        public String apepaterno_Paciente               { get; set; } //apellido paterno
        public String apematerno_Paciente               { get; set; } //apellido materno        
        public String fecnacimiento_Paciente            { get; set; }
        public String dni_Paciente                      { get; set; }
        public int sexo_Paciente                        { get; set; }
        public String email_Paciente                    { get; set; }
        public String direccion_Paciente                { get; set; }
        public String telfijo_Paciente                  { get; set; }
        public String telmovil_Paciente                 { get; set; }
        public String fcreacion_Paciente                { get; set; }

        //datos de validacion
        public int asegurado_Paciente                   { get; set; } // 1 o 0 //YA NO SE USARA ESTE CAMPO (26/12/2011)

        //tabla paciente tipo
        public int PacienteTipo_codigo_PacienteTipo     { get; set; } //tipo de paciente ej. 3
        public String tiposeguro_PacienteTipo           { get; set; }
        public String codseguro_PacienteTipo            { get; set; }
        public String descripcion_PacienteTipo          { get; set; }

        //tabla paciente gestante
        public int codigo_PacienteGestante              { get; set; }
        public int tipo_PacienteGestante                { get; set; }
        public String descripcion_PacienteGestante      { get; set; }
        public String fecha_PacienteGestante            { get; set; }
        public int Paciente_codigo_Paciente             { get; set; }

        public clsBoleta clsBoleta
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
            }
        }




        public bool mtdValidacionGestante()
        {
            clsConexion con = new clsConexion();            
            MySqlCommand command;
            MySqlDataReader Reader;
            try
            {
                con.mtdConectar();
                command = con.conexion.CreateCommand();                
              
                    command.CommandText = "CALL spValidarPacienteGestante('" + this.dni_Paciente + "');";
                    Reader = command.ExecuteReader();
                    while (Reader.Read())
                    {
                        this.codigo_paciente            = Reader.GetInt16(0);
                        this.nombre_Paciente            = Reader.GetString(1);
                        this.apepaterno_Paciente        = Reader.GetString(2);
                        this.apematerno_Paciente        = Reader.GetString(3);
                        this.dni_Paciente               = Reader.GetString(4);
                        this.sexo_Paciente              = Reader.GetInt16(5);
                        this.Paciente_codigo_Paciente   = Reader.GetInt16(6);
                        this.tipo_PacienteGestante      = Reader.GetInt16(7);
                        this.fecha_PacienteGestante     = Reader.GetString(8);

                        return true;
                    }                
                
                con.mtdDesconectar();                
                return false;
            }
            catch (Exception ex)
            {
                //return false;
                throw ex;
            }
        }

        public bool mtdActualizarPaciente()
        {
            clsConexion con         = new clsConexion();
            MySqlCommand command;
            try
            {
                con.mtdConectar();
                command = con.conexion.CreateCommand();
                command.CommandText = "CALL spActualizarPaciente('" + this.nombre_Paciente + "','" + this.apepaterno_Paciente + "','" + this.apematerno_Paciente + "','" + this.fecnacimiento_Paciente + "','" + this.dni_Paciente + "'," + this.sexo_Paciente + ",'" + this.email_Paciente + "','" + this.direccion_Paciente + "','" + this.telfijo_Paciente + "','" + this.telmovil_Paciente + "'," + this.PacienteTipo_codigo_PacienteTipo + ");";
                command.ExecuteNonQuery();
                con.mtdDesconectar();
                System.Windows.Forms.MessageBox.Show("Paciente Actualizado");
                return true;
            }
            catch (Exception e)
            {
                //return false;
                throw e;
            }
        }

        public DataTable mtdCargarTipoSeguro()
        {
            clsConexion con                 = new clsConexion();
            MySqlCommand command            = new MySqlCommand();
            DataTable ObjDatatable          = new DataTable();
            MySqlDataAdapter ObjDataAdapter = new MySqlDataAdapter();
            try
            {
                con.mtdConectar();
                command = con.conexion.CreateCommand();
                command.CommandText = "SELECT tiposeguro_PacienteTipo FROM PacienteTipo";
                command.ExecuteNonQuery();
                ObjDataAdapter.SelectCommand = command;
                ObjDataAdapter.Fill(ObjDatatable);           
                con.mtdDesconectar();
                ObjDataAdapter = null;
                return ObjDatatable;
            }
            catch (Exception)
            {
                throw new Exception("System Error.");
            }
        }

        public bool mtdAñadirPaciente()
        {
            clsConexion con = new clsConexion();
            MySqlCommand command;
            try
            {
                con.mtdConectar();
                command = con.conexion.CreateCommand();
                command.CommandText = "CALL spAñadirGestionarPaciente('" + this.dni_Paciente + "','" + this.nombre_Paciente + "','" + this.apepaterno_Paciente + "','" + this.apematerno_Paciente + "','" + this.fecnacimiento_Paciente + "'," + this.sexo_Paciente + "," + this.PacienteTipo_codigo_PacienteTipo + ");";
                command.ExecuteNonQuery();

                con.mtdDesconectar();
                System.Windows.Forms.MessageBox.Show("Paciente Agregado!");
                return true;
            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show("Paciente ya existe");
                return false;
                throw e;
            }
        }

        public bool mtdBuscarGestionarPaciente()
        {
            clsConexion con = new clsConexion();            
            String DNI      = null;
            MySqlCommand command;
            MySqlDataReader Reader;
            try
            {
                con.mtdConectar();
                command = con.conexion.CreateCommand();
                DNI     = this.dni_Paciente;

                if (DNI != "")
                {
                    command.CommandText = "CALL spBuscarGestionarPaciente('" + DNI + "');";
                    Reader = command.ExecuteReader();
                    while (Reader.Read())
                    {
                        this.codigo_paciente                    = Reader.GetInt16(0);
                        this.nombre_Paciente                    = Reader.GetString(1);
                        this.apepaterno_Paciente                = Reader.GetString(2);
                        this.apematerno_Paciente                = Reader.GetString(3);
                        this.fecnacimiento_Paciente             = Reader.GetString(4);
                        this.dni_Paciente                       = Reader.GetString(5);
                        this.sexo_Paciente                      = Reader.GetInt16(6);
                        this.email_Paciente                     = Reader.GetString(7);
                        this.direccion_Paciente                 = Reader.GetString(8);
                        this.telfijo_Paciente                   = Reader.GetString(9);
                        this.telmovil_Paciente                  = Reader.GetString(10);
                        this.PacienteTipo_codigo_PacienteTipo   = Reader.GetInt16(11);
                        this.tipo_PacienteGestante              = Reader.GetInt16(12);
                        return true;
                    }
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("Paciente no Encontrado");

                    return false;
                }

                System.Windows.Forms.MessageBox.Show("Paciente no Encontrado");

                con.mtdDesconectar();                

                return false;
            }
            catch (Exception ex)
            {
                //return false;
                throw ex; 
            }
        }

        public bool mtdActualizarPacienteGestante()
        {           
            clsConexion con = new clsConexion();
            MySqlCommand command;

            try
            {
                con.mtdConectar();
                command = con.conexion.CreateCommand();
                command.CommandText = "CALL  spActualizarPacienteGestante(" + this.tipo_PacienteGestante + "," + this.codigo_paciente + ");";
                command.ExecuteNonQuery();
                con.mtdDesconectar();
                System.Windows.Forms.MessageBox.Show("Paciente se Actualizado en la Lista de Gestantes");
                return true;
            }
            catch (Exception e)
            {
                return false;
                throw e;
            }
        }

        public bool mtdAñadirPacienteGestante()
        {
            clsConexion con = new clsConexion();
            MySqlCommand command;

            try
            {
                con.mtdConectar();
                command = con.conexion.CreateCommand();
                //se enviara una fecha vacia para que cuando sea la segunda vez del paciente gestante recien se actualize
                command.CommandText = "CALL spAñadirPacienteGestante("+this.tipo_PacienteGestante+","+this.codigo_paciente+");";
                command.ExecuteNonQuery();

                con.mtdDesconectar();
                System.Windows.Forms.MessageBox.Show("Paciente Agregado a la Lista de Gestantes");
                return true;
            }
            catch (Exception e)
            {
                return false;
                throw e;
            }
        }

        public bool mtdBuscarPacienteGestante()
        {
            clsConexion con = new clsConexion();            
            MySqlCommand command;
            MySqlDataReader Reader;

            try
            {
                con.mtdConectar();
                command = con.conexion.CreateCommand();                

                    command.CommandText = "CALL spBuscarPacienteGestante('" + this.Paciente_codigo_Paciente + "');";
                    Reader = command.ExecuteReader();
                    while (Reader.Read())
                    {
                        this.codigo_PacienteGestante = Reader.GetInt16(0);
                        this.tipo_PacienteGestante = Reader.GetInt16(1);
                        this.descripcion_PacienteGestante = Reader.GetString(3);
                        this.fecha_PacienteGestante = Reader.GetString(4);
                        this.Paciente_codigo_Paciente = Reader.GetInt16(5);
                        return true;
                    }              
                con.mtdDesconectar();
                return false;   
            }
            catch (Exception ex)
            {
                //return false;
                throw ex;                
            }
        }

        public bool mtdBuscarPaciente()
        {
            clsConexion con = new clsConexion();
            String DNI      = null;            
            MySqlCommand command;
            MySqlDataReader Reader;
            
            try
            {

                con.mtdConectar();
                command = con.conexion.CreateCommand();
                DNI     = this.dni_Paciente;
                if (DNI != "")
                {
                    command.CommandText = "CALL spBuscarPaciente('" + DNI + "');";
                    Reader = command.ExecuteReader();
                    while (Reader.Read())
                    {
                        this.codigo_paciente                = Reader.GetInt16("codigo_Paciente");
                        this.nombre_Paciente                = Reader.GetString("nombre_Paciente");
                        this.apepaterno_Paciente            = Reader.GetString("apepaterno_Paciente");
                        this.apematerno_Paciente            = Reader.GetString("apematerno_Paciente");
                        this.dni_Paciente                   = Reader.GetString("dni_Paciente");
                        this.sexo_Paciente                  = Reader.GetInt16("sexo_Paciente");
                        //this.asegurado_Paciente = Reader.GetInt16("asegurado_Paciente");                                               
                        this.tiposeguro_PacienteTipo = Reader.GetString("tiposeguro_PacienteTipo");
                        this.tipo_PacienteGestante          = Reader.GetInt16("tipo_PacienteGestante");
                        this.descripcion_PacienteGestante   = Reader.GetString("descripcion_PacienteGestante");
                        this.fecha_PacienteGestante         = Reader.GetString("fecha_PacienteGestante");
                        //System.Windows.Forms.MessageBox.Show("Paciente Encontrado");
                        return true;
                    }
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("Paciente no Encontrado");
                    return false;
                }
                con.mtdDesconectar();
                System.Windows.Forms.MessageBox.Show("Paciente no Encontrado");
                return false;
            }
            catch (Exception ex)
            {
                return false;
                throw ex;                
            }
        }
    }
}
